package com.test.jdk.funtion;

import java.util.function.Consumer;

/**
 * 函数式接口 - 消费者
 */
public class ConsumerDemo {
    public static void main(String[] args) {
        fun2(msg -> {
            System.out.println("大写转为小写:" + msg.toLowerCase());
            System.out.println("小写转为大写:" + msg.toUpperCase());
        });
        fun3(m1 -> {System.out.println("大写转为小写:" + m1.toLowerCase());}
                , m2 -> { System.out.println("小写转为大写:" + m2.toUpperCase());});

    }

    /**
     * 普通方法的使用
     * @param consumer
     */
    private static void fun2(Consumer<String> consumer) {
        // 有参无返回值
        consumer.accept("hellow world");
    }

    /**
     * 默认方法的使用，进行组合操作
     * @param consumer
     * @param consumer2
     */
    private static void fun3(Consumer<String> consumer, Consumer<String> consumer2) {
        String str = "hello world";
//        consumer.accept(str); //转小写
//        consumer2.accept(str);//转大写
        //默认方法andThen 先执行consumer 再执行consumer2
        consumer.andThen(consumer2).accept(str);
        //默认方法andThen 先执行再执行consumer2 再执行consumer
        System.out.println("=================================");
        consumer2.andThen(consumer).accept(str);
    }
}
